Rundeck: プラグインの導入方法(& Amazon S3プラグイン導入を試してみる)
Rundeckでは、プラグインの形で様々な機能を追加する事が出来ます。そこで当エントリでは現在公開されているプラグインの1つであるs3関連のプラグインを実際に導入してみて、その手順について確認してみたいと思います。
目次
プラグイン導入の基本的な流れ
Rundeckでプラグインの導入を行なう際は、基本的に以下の手順を踏んで行きます。
- プラグインに関するファイル一式を入手
- プラグインファイルのビルドを行ない、ビルドされたjarファイルを所定のパスにデプロイ
- プラグインに関する設定
事前準備: Gradleのインストール
プラグインのビルドを行なう際はGradleを用いる必要があります。更にはGradle実行の際にはJavaも導入しておく必要がありますのでまずはそこから整えて行きましょう。
Amazon Linuxではインスタンス起動時で既にJavaは入っています。
$ java -version java version "1.7.0_91" OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
以下手順等を使い、Oracle Javaを入れるのも良いでしょう。
$ java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
以下情報に倣い、Gradleのインストールを行います。
# アーカイブの入手、解凍 $ wget https://services.gradle.org/distributions/gradle-2.10-all.zip $ sudo unzip gradle-2.10-all.zip -d /opt/ $ ls -l /opt/ 合計 8 drwxr-xr-x 5 root root 4096 1月 7 15:54 aws drwxr-xr-x 9 root root 4096 12月 21 22:23 gradle-2.10 $ $ sudo ln -s /opt/gradle-2.10 /opt/gradle # 環境変数設定、バージョン確認 $ export GRADLE_HOME=/opt/gradle $ export PATH=$PATH:$GRADLE_HOME/bin $ gradle -v ------------------------------------------------------------ Gradle 2.10 ------------------------------------------------------------ Build time: 2015-12-21 21:15:04 UTC Build number: none Revision: 276bdcded730f53aa8c11b479986aafa58e124a6 Groovy: 2.4.4 Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013 JVM: 1.8.0_65 (Oracle Corporation 25.65-b01) OS: Linux 4.1.13-19.30.amzn1.x86_64 amd64
プラグイン導入実践: rundeck-s3-log-plugin
Rundeckで紹介されているプラグインの一覧は以下ページにそれぞれ展開されています。
当エントリではその中の1つ、rundeck-s3-log-pluginを試しに導入してみたいと思います。ジョブの実行ログをAmazon S3の所定のバケットに格納出来る仕組みを提供してくれるプラグインです。
ビルドに用いるソースコード一式を入手するにはgitで一式を取得するか、zipアーカイブをダウンロードしてくる必要があります。ここではgitを使う方向で進めます。まずはgitのインストールから。次いでgit cloneで必要なブツをサーバに落としてきます。
$ sudo yum -y install git $ git --version git version 2.4.3 $ git clone https://github.com/rundeck-plugins/rundeck-s3-log-plugin.git
ディレクトリ移動を行い、gradlewを使ってビルドを実施。
$ cd rundeck-s3-log-plugin/ $ ./gradlew clean build
rundeck-s3-log-plugin/build/libsフォルダにビルドされたjarファイルが生成されていますので、そのjarファイルをRundeck環境下でのライブラリファイル配置場所である/var/lib/rundeck/libext/に配備します。
$ cd build/libs/ $ pwd /home/ec2-user/rundeck-s3-log-plugin/build/libs $ sudo mv rundeck-s3-log-plugin-1.0.0.jar /var/lib/rundeck/libext/ $ sudo chown rundeck.rundeck /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.0.jar $ sudo chmod 644 /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.0.jar $ ll /var/lib/rundeck/libext/ 合計 15088 drwxrwxr-x 5 rundeck rundeck 4096 1月 10 04:57 cache -rw-r--r-- 1 rundeck rundeck 3907 12月 2 20:31 rundeck-copyfile-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 2300 12月 2 20:31 rundeck-flow-control-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 2761849 12月 2 20:31 rundeck-git-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 2546868 12月 2 20:31 rundeck-jasypt-encryption-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 6074 12月 2 20:31 rundeck-job-state-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 3472 12月 2 20:31 rundeck-localexec-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 9526 12月 2 20:31 rundeck-orchestrator-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 10071361 1月 9 15:20 rundeck-s3-log-plugin-1.0.0.jar -rw-r--r-- 1 rundeck rundeck 16138 12月 2 20:31 rundeck-script-plugin-2.6.2.jar -rw-r--r-- 1 rundeck rundeck 9533 12月 2 20:31 rundeck-stub-plugin-2.6.2.jar
次いで、幾つか必要な設定事項の追加がありますので、その作業を行います。ログファイルの保存に今回導入するs3プラグインを使うという指定をrundeck-config.propertiesに追記。
$ sudo chmod 777 /etc/rundeck/rundeck-config.properties $ sudo echo "rundeck.execution.logs.fileStoragePlugin=org.rundeck.amazon-s3" >> /etc/rundeck/rundeck-config.properties $ sudo chmod 644 /etc/rundeck/rundeck-config.properties
s3バケット及び格納パス、ファイル名に関する設定はframework.propertiesというファイルに追記します。
$ sudo chmod 777 /etc/rundeck/framework.properties $ sudo echo "" >> /etc/rundeck/framework.properties $ sudo echo "# ----------------------------------------------------------------" >> /etc/rundeck/framework.properties $ sudo echo "# Rundeck Plugin - Amazon S3 Settings." >> /etc/rundeck/framework.properties $ sudo echo "# ----------------------------------------------------------------" >> /etc/rundeck/framework.properties $ sudo echo "# name of the bucket" >> /etc/rundeck/framework.properties $ sudo echo "framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.bucket=cm-rundeck-s3logs" >> /etc/rundeck/framework.properties $ sudo echo "" >> /etc/rundeck/framework.properties $ sudo echo "# path to store the logs" >> /etc/rundeck/framework.properties $ sudo echo 'framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.path=logs/${job.project}/${job.execid}/${job.execid}.log' >> /etc/rundeck/framework.properties $ sudo chmod 644 /etc/rundeck/framework.properties $ ll /etc/rundeck/ 合計 44 -rw-r--r-- 1 rundeck rundeck 738 12月 2 20:31 admin.aclpolicy -rw-r--r-- 1 rundeck rundeck 1104 12月 2 20:31 apitoken.aclpolicy -rw-r--r-- 1 rundeck rundeck 1692 1月 9 15:50 framework.properties -rw-r--r-- 1 rundeck rundeck 141 12月 2 20:31 jaas-loginmodule.conf -rw-r--r-- 1 rundeck rundeck 7454 12月 2 20:31 log4j.properties -rw-r--r-- 1 rundeck rundeck 1788 12月 2 20:31 profile -rw-r--r-- 1 rundeck rundeck 549 12月 2 20:31 project.properties -rw-r--r-- 1 rundeck rundeck 986 12月 2 20:31 realm.properties -rw-r--r-- 1 rundeck rundeck 479 1月 9 15:39 rundeck-config.properties drwxrwxr-x 2 rundeck rundeck 4096 1月 7 15:55 ssl
s3アクセスに際しての認証情報については、EC2に割り当てたIAM Roleを使って行なう形としました。(ですので、Rundeckサーバ作成の際にはEC2インスタンスにIAM Roleを割り当てておく必要があります) IAM Roleを割り当てていない場合はドキュメントに倣い、framework.propertiesに設定を追記してください。(※IAM Roleを活用する方がオススメです)
また、設定したバケットについては併せて作成しておいてください。
念の為Rundeckを再起動させておきます。
$ sudo /etc/init.d/rundeckd restart
動作確認: rundeck-s3-log-plugin
準備が整ったら、任意のジョブを実行してみます。
ジョブ実行後、所定のバケット配下の内容を確認してみます。ちゃんとログが出力されていました。
まとめ
以上、Rundeckにおけるプラグイン導入の手順とサンプルとしてS3プラグインの導入手順のご紹介でした。Rundeckのプラグイン、数自体はまだそこまで多くは無いですが、便利なものも幾つかあるようなので用途に応じて導入しておきたいところですね。こちらからは以上です。